Digital data input/output modules which employ data compression and decompression may be employed for many purposes. One example is the compression and decompression of data as it is transferred between a host computer system and a data storage system, such as magnetic tape or optical disk data storage systems.
It is critical that the data be compressed and transferred at high speed, without stopping, and be correct, without errors, when transferred.
When data is stored on magnetic tape or optical disk, it may be archived for a time such that the original source of the data updates or alters the originating information in the meantime. If, as is typical, the magnetic tape or optical disk is employed as backup, the user will most likely only access the backup data if the primary storage has failed and the user is trying to rebuild it. Thus, should the stored data have uncorrectable errors which cannot be ascertained from the context, and the original data is changed or lost, there is no way to rebuild the data.
A potential source of error for the archived data is the data compression. As the result, certain highly robust systems may employ a special circuit for checking the accuracy of the data compression "on-the-fly" so that the errors can be corrected before the data is archived. One special circuit for checking the accuracy of the data compression is illustrated in coassigned U.S. Pat. No. 5,608,396, Cheng et al., issued Mar. 5, 1997, which employs a custom cell known as a Content Addressable Memory (CAM) and a software implementation to verify compressed data on the fly by simultaneous decode and cyclic redundancy check (CRC) comparison with source data. Error correction control codes can be inserted or the transfer interrupted if an error is found. Also, decompression on the fly requires full duplex operation with one piece of logic compressing, and another piece of logic decompressing, requiring additional logic. Such special circuitry is expensive and therefore can only be used on a few "high end" archiving storage systems.
In high end systems, a plurality of hosts are often attached to a plurality of drives. Thus, if a dual port system is provided, throughput can be greatly enhanced if, for example, in addition to Host 1 tranferring data with Drive 3, there can be a separate transfer between Host 2 and Drive 1.
In addition, in some environments, it is critical that a host does not lose access to a storage device even if one of the transmission paths fails due to a hardware failure or a hang condition. Thus, one approach is a dual port system providing dual paths to storage, so that if the transmission path to one port fails, the other port may still be available to gain access to the data storage drive.
Again, the extra logic and communication circuitry is expensive and can only be used on a few data storage systems that warrant the expense.
Low cost systems also require input/output modules with data compression/decompression in order to archive large amounts of data with a reasonable use of storage media.